/*
 * Copyright 2019 Xilinx, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "arbitrary_precision_casting.h"
 
int main () {
  din_t A, B;
  dout_t RES;
  int i, retval=0;
  ofstream FILE;

  // Save the results to a file
  FILE.open ("result.dat");

  // Call the function
  A=65536;
  B=65536;
  for(i=0; i<20;++i) {
    RES=arbitrary_precision_casting(A,B);
    FILE << RES << endl;
    A=A+1024;
    B=B-2047;
  }
  FILE.close();
  
 // Compare the results file with the golden results
  retval = system("diff --brief -w result.dat result.golden.dat");
  if (retval != 0) {
    cout << "Test failed  !!!" << endl; 
    retval=1;
  } else {
    cout << "Test passed !" << endl;
  }

  // Return 0 if the test passes
  return retval;
}

